home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Entertainment / luff stuff / luff⁄upd.c < prev    next >
Encoding:
Text File  |  1985-11-08  |  2.7 KB  |  122 lines  |  [TEXT/MACA]

  1. # include "def.h"
  2.  
  3. /* Administrate the updating of point and threat boards */
  4. update(x, y) int x, y;{
  5.     register int i, way;
  6.     short int xx, yy, step, j;
  7.     char who;
  8.     LOGIC xflag, oflag, blankflag, stopflag, win;
  9.  
  10.     win = FALSE;
  11.     who = board[x][y];
  12.     catch(x, y);
  13.     autom();
  14.     if(who != ' '){
  15.     if((who == 'o') && (threat[0][x][y] == 4))
  16.         win = TRUE;
  17.     if((who == 'x') && (threat[1][x][y] == 4))
  18.         win = TRUE;
  19.     thtcnt[0][threat[0][x][y]] -= 1;
  20.     threat[0][x][y] = 0;
  21.     thtcnt[1][threat[1][x][y]] -= 1;
  22.     threat[1][x][y] = 0;
  23.     }
  24.     else{
  25.     for(way = 0; way < 4; way++){
  26.         p_hvlr[way][x][y] = tmppts[way][0][8] + tmppts[way][1][8];
  27.         t_hvlr[way][0][x][y] = tmptht[way][0][8];
  28.         t_hvlr[way][1][x][y] = tmptht[way][1][8];
  29.     }
  30.     point[x][y] = p_hvlr[0][x][y] + p_hvlr[1][x][y] +
  31.               p_hvlr[2][x][y] + p_hvlr[3][x][y];
  32.     if( t_hvlr[0][0][x][y] | t_hvlr[1][0][x][y] |
  33.         t_hvlr[2][0][x][y] | t_hvlr[3][0][x][y] )
  34.         updtht('o', x, y);
  35.     else{
  36.         thtcnt[0][threat[0][x][y]] -= 1;
  37.         threat[0][x][y] = 0;
  38.     }
  39.     if( t_hvlr[0][1][x][y] | t_hvlr[1][1][x][y] |
  40.         t_hvlr[2][1][x][y] | t_hvlr[3][1][x][y] )
  41.         updtht('x', x, y);
  42.     else{
  43.         thtcnt[1][threat[1][x][y]] -= 1;
  44.         threat[1][x][y] = 0;
  45.     }
  46.     }
  47.     for(way = 0; way < 4; way++){
  48.     for(step = -1; step <= 1; step += 2){
  49.         xflag = oflag = blankflag = stopflag = FALSE;
  50.         i = 8;
  51.         for(j = 0; j < 4; j++){
  52.         i += step;
  53.         if(blankflag == 2)
  54.             break;
  55.         switch(hvlr[way][i]){
  56.             case ' ':
  57.             blankflag++;
  58.             break;
  59.             case 'o':
  60.             oflag = TRUE;
  61.             blankflag = FALSE;
  62.             break;
  63.             case 'x':
  64.             xflag = TRUE;
  65.             blankflag = FALSE;
  66.             break;
  67.             case 'z':
  68.             stopflag = TRUE;
  69.             break;
  70.         }
  71.         if(stopflag)
  72.             break;
  73.         if(!blankflag)
  74.             continue;
  75.         switch(way){
  76.             case 0:
  77.             xx = x + i - 8;
  78.             yy = y;
  79.             break;
  80.             case 1:
  81.             xx = x;
  82.             yy = y + i - 8;
  83.             break;
  84.             case 2:
  85.             xx = x + i - 8;
  86.             yy = y + i - 8;
  87.             break;
  88.             case 3:
  89.             xx = x + i - 8;
  90.             yy = y - i + 8;
  91.             break;
  92.         }
  93.         p_hvlr[way][xx][yy] = tmppts[way][0][i] + tmppts[way][1][i];
  94.         point[xx][yy] = p_hvlr[0][xx][yy] + p_hvlr[1][xx][yy] +
  95.                 p_hvlr[2][xx][yy] + p_hvlr[3][xx][yy];
  96.         if(!xflag){
  97.             t_hvlr[way][0][xx][yy] = tmptht[way][0][i];
  98.             if( t_hvlr[0][0][xx][yy] | t_hvlr[1][0][xx][yy] |
  99.             t_hvlr[2][0][xx][yy] | t_hvlr[3][0][xx][yy] )
  100.             updtht('o', xx, yy);
  101.             else{
  102.             thtcnt[0][threat[0][xx][yy]] -= 1;
  103.             threat[0][xx][yy] = 0;
  104.             }
  105.         }
  106.         if(!oflag){
  107.             t_hvlr[way][1][xx][yy] = tmptht[way][1][i];
  108.             if( t_hvlr[0][1][xx][yy] | t_hvlr[1][1][xx][yy] |
  109.             t_hvlr[2][1][xx][yy] | t_hvlr[3][1][xx][yy] )
  110.             updtht('x', xx, yy);
  111.             else{
  112.             thtcnt[1][threat[1][xx][yy]] -= 1;
  113.             threat[1][xx][yy] = 0;
  114.             }
  115.         }
  116.         }
  117.     }
  118.     }
  119.     return(win);
  120. }
  121.  
  122.